package com.atguigu.bean.mapper;

import com.atguigu.bean.bean.User;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author wk
 * @create 2021-05-27 17:59
 * 面向接口编程
 * 在接口中进行方法的定义
 *
 */
public interface UserMapper {
    /**
     * 根据id查询用户信息
     * 返回一个实体类对象
     * @param id
     * @return
     */
    User getUserById(@Param("id") Integer id);

    /**
     * 查询用户信息为list集合
     * @return
     */
    List<User> getUserList();

    /**
     * 插入一个用户
     * @param user
     * @return
     */
    int insertUser(User user);

    /**
     * 根据id修改用户信息
     * @return
     */
    int updateUser(@Param("id") Integer id);

    /**
     * 查询用户个数
     * @return
     */
    int getCount();

    /**
     * 根据id查询用户信息为一个map集合
     * @param id
     * @return
     *
     */
    Map<String,Object> getUserToMap(@Param("id") Integer id);

    /**
     * 查询所有用户信息为一个map集合
     * @param id
     * @return
     * @MapKey("id") 这个注解的作用是将设置id为键，用户信息将为值
     */
    @MapKey("id")
    Map<String,Object> getAllUserToMap();

    /**
     * 模糊查询
     * @param username
     * @return
     */
    List<User> mohu(@Param("username") String username);

    /**
     * 批量删除
     * @param ids
     * @return
     */
    int deleteMore(@Param("ids") String ids);

    /**
     * 插入用户并获取主键
     * @param user
     * @return
     */
    int insertUserAndGetKey(User user);

}
